package com.tjbklx1.pattern.specification.demo2;

/**
 * Like规格书
 * @author tjbklx1
 * @date 2018-10-9
 */
public class UserByNameLike implements IUserSpecification {
	// like的标记
	private final static String LIKE_FLAG = "%";
	// 基准的like字符串
	private String likeStr;

	// 构造函数传递基准姓名
	public UserByNameLike(String _likeStr) {
		this.likeStr = _likeStr;
	}

	// 检验用户是否满足条件
	public boolean isSatisfiedBy(User user) {
		boolean result = false;
		String name = user.getName();
		// 替换掉%后的干净字符串
		String str = likeStr.replace("%", "");
		// 是以名字开头，如'国庆%'
		if (likeStr.endsWith(LIKE_FLAG) && !likeStr.startsWith(LIKE_FLAG)) {
			result = name.startsWith(str);
		} else if (likeStr.startsWith(LIKE_FLAG) && !likeStr.endsWith(LIKE_FLAG)) { // 类似
																					// '%国庆'
			result = name.endsWith(str);
		} else {
			result = name.contains(str); // 类似于'%国庆%'
		}
		return result;
	}
}